home *** CD-ROM | disk | FTP | other *** search
/ PC World 2007 December / PCWorld_2007-12_cd.bin / v cisle / htttrack / httrack-3.41-3.exe / {app} / src / htsdefines.h < prev    next >
C/C++ Source or Header  |  2007-02-03  |  9KB  |  228 lines

  1. /* ------------------------------------------------------------ */
  2. /*
  3. HTTrack Website Copier, Offline Browser for Windows and Unix
  4. Copyright (C) Xavier Roche and other contributors
  5.  
  6. This program is free software; you can redistribute it and/or
  7. modify it under the terms of the GNU General Public License
  8. as published by the Free Software Foundation; either version 2
  9. of the License, or any later version.
  10.  
  11. This program is distributed in the hope that it will be useful,
  12. but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14. GNU General Public License for more details.
  15.  
  16. You should have received a copy of the GNU General Public License
  17. along with this program; if not, write to the Free Software
  18. Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
  19.  
  20. Important notes:
  21.  
  22. - We hereby ask people using this source NOT to use it in purpose of grabbing
  23. emails addresses, or collecting any other private information on persons.
  24. This would disgrace our work, and spoil the many hours we spent on it.
  25.  
  26.  
  27. Please visit our Website: http://www.httrack.com
  28. */
  29.  
  30.  
  31. /* ------------------------------------------------------------ */
  32. /* File: Some defines for httrack.c and others                  */
  33. /* Author: Xavier Roche                                         */
  34. /* ------------------------------------------------------------ */
  35.  
  36. // Fichier librairie .h
  37. #ifndef HTS_DEFINES_DEFH
  38. #define HTS_DEFINES_DEFH
  39.  
  40. /* Forward definitions */
  41. #ifndef HTS_DEF_FWSTRUCT_httrackp
  42. #define HTS_DEF_FWSTRUCT_httrackp
  43. typedef struct httrackp httrackp;
  44. #endif
  45. #ifndef HTS_DEF_FWSTRUCT_lien_back
  46. #define HTS_DEF_FWSTRUCT_lien_back
  47. typedef struct lien_back lien_back;
  48. #endif
  49. #ifndef HTS_DEF_FWSTRUCT_htsblk
  50. #define HTS_DEF_FWSTRUCT_htsblk
  51. typedef struct htsblk htsblk;
  52. #endif
  53. #ifndef HTS_DEF_FWSTRUCT_hts_stat_struct
  54. #define HTS_DEF_FWSTRUCT_hts_stat_struct
  55. typedef struct hts_stat_struct hts_stat_struct;
  56. #endif
  57. #ifndef HTS_DEF_FWSTRUCT_htsmoduleStruct
  58. #define HTS_DEF_FWSTRUCT_htsmoduleStruct
  59. typedef struct htsmoduleStruct htsmoduleStruct;
  60. #endif
  61. #ifndef HTS_DEF_FWSTRUCT_t_hts_callbackarg
  62. #define HTS_DEF_FWSTRUCT_t_hts_callbackarg
  63. typedef struct t_hts_callbackarg t_hts_callbackarg;
  64. #endif
  65. #ifndef HTS_DEF_FWSTRUCT_t_hts_callbackarg
  66. #define HTS_DEF_FWSTRUCT_t_hts_callbackarg
  67. typedef struct t_hts_callbackarg t_hts_callbackarg;
  68. #endif
  69.  
  70. /* External callbacks */
  71. #ifndef EXTERNAL_FUNCTION
  72. #ifdef _WIN32
  73. #define EXTERNAL_FUNCTION __declspec(dllexport)
  74. #else
  75. #define EXTERNAL_FUNCTION 
  76. #endif
  77. #endif
  78.  
  79. /* --wrapper plug function prototype */
  80.  
  81. typedef int (*t_hts_plug)(httrackp *opt, const char* argv);
  82. typedef int (*t_hts_unplug)(httrackp *opt);
  83.  
  84. /* htsopt function callbacks definitions */
  85.  
  86. typedef void  (* t_hts_htmlcheck_init)(t_hts_callbackarg *carg);
  87. typedef void  (* t_hts_htmlcheck_uninit)(t_hts_callbackarg *carg);
  88. typedef int   (* t_hts_htmlcheck_start)(t_hts_callbackarg *carg, httrackp* opt);
  89. typedef int   (* t_hts_htmlcheck_end)(t_hts_callbackarg *carg, httrackp *opt);
  90. typedef int   (* t_hts_htmlcheck_chopt)(t_hts_callbackarg *carg, httrackp* opt);
  91. typedef int   (* t_hts_htmlcheck_process)(t_hts_callbackarg *carg, httrackp *opt, 
  92.                                           char** html, int* len, const char* url_adresse, const char* url_fichier);
  93. typedef t_hts_htmlcheck_process t_hts_htmlcheck_preprocess;
  94. typedef t_hts_htmlcheck_process t_hts_htmlcheck_postprocess;
  95. typedef int   (* t_hts_htmlcheck_check_html)(t_hts_callbackarg *carg, httrackp *opt, 
  96.                                              char* html, int len, const char* url_adresse, const char* url_fichier);
  97. typedef const char* (* t_hts_htmlcheck_query)(t_hts_callbackarg *carg, httrackp *opt, 
  98.                                               const char* question);
  99. typedef const char* (* t_hts_htmlcheck_query2)(t_hts_callbackarg *carg, httrackp *opt, 
  100.                                                const char* question);
  101. typedef const char* (* t_hts_htmlcheck_query3)(t_hts_callbackarg *carg, httrackp *opt, 
  102.                                                const char* question);
  103. typedef int   (* t_hts_htmlcheck_loop)(t_hts_callbackarg *carg, httrackp *opt, 
  104.                                        lien_back* back, int back_max, int back_index, 
  105.                                        int lien_tot, int lien_ntot, 
  106.                                        int stat_time, hts_stat_struct* stats);
  107. typedef int   (* t_hts_htmlcheck_check_link)(t_hts_callbackarg *carg, httrackp *opt, 
  108.                                              const char* adr, const char* fil, int status);
  109. typedef int   (* t_hts_htmlcheck_check_mime)(t_hts_callbackarg *carg, httrackp *opt, 
  110.                                              const char* adr, const char* fil, const char* mime, int status);
  111. typedef void  (* t_hts_htmlcheck_pause)(t_hts_callbackarg *carg, httrackp *opt, 
  112.                                         const char* lockfile);
  113. typedef void  (* t_hts_htmlcheck_filesave)(t_hts_callbackarg *carg, httrackp *opt, 
  114.                                            const char* file);
  115. typedef void  (* t_hts_htmlcheck_filesave2)(t_hts_callbackarg *carg, httrackp *opt, 
  116.                                             const char* hostname, const char* filename, const char* localfile, 
  117.                                             int is_new, int is_modified, int not_updated);
  118. typedef int   (* t_hts_htmlcheck_linkdetected)(t_hts_callbackarg *carg, httrackp *opt, 
  119.                                                char* link);
  120. typedef int   (* t_hts_htmlcheck_linkdetected2)(t_hts_callbackarg *carg, httrackp *opt, 
  121.                                                 char* link, const char* tag_start);
  122. typedef int   (* t_hts_htmlcheck_xfrstatus)(t_hts_callbackarg *carg, httrackp *opt, 
  123.                                             lien_back* back);
  124. typedef int   (* t_hts_htmlcheck_savename)(t_hts_callbackarg *carg, httrackp *opt, 
  125.                                            const char* adr_complete, const char* fil_complete, 
  126.                                            const char* referer_adr, const char* referer_fil, char* save);
  127. typedef int   (* t_hts_htmlcheck_sendhead)(t_hts_callbackarg *carg, httrackp *opt, 
  128.                                            char* buff, const char* adr, const char* fil, 
  129.                                            const char* referer_adr, const char* referer_fil, 
  130.                                            htsblk* outgoing);
  131. typedef int   (* t_hts_htmlcheck_receivehead)(t_hts_callbackarg *carg, httrackp *opt, 
  132.                                               char* buff, const char* adr, const char* fil, 
  133.                                               const char* referer_adr, const char* referer_fil, 
  134.                                               htsblk* incoming);
  135.  
  136. /* External additional parsing module(s) */
  137. typedef int (*t_hts_htmlcheck_detect)(t_hts_callbackarg *carg, httrackp *opt, htsmoduleStruct* str);
  138. typedef int (*t_hts_htmlcheck_parse)(t_hts_callbackarg *carg, httrackp *opt, htsmoduleStruct* str);
  139.  
  140. /* Callbacks */
  141. #ifndef HTS_DEF_FWSTRUCT_t_hts_htmlcheck_callbacks
  142. #define HTS_DEF_FWSTRUCT_t_hts_htmlcheck_callbacks
  143. typedef struct t_hts_htmlcheck_callbacks t_hts_htmlcheck_callbacks;
  144. #endif
  145.  
  146. /* Callabck array */
  147. #define DEFCALLBACK(NAME)         \
  148.   struct NAME {                   \
  149.     t_hts_htmlcheck_ ##NAME fun;  \
  150.     t_hts_callbackarg *carg;      \
  151.   } NAME
  152.  
  153. /* Callback items */
  154. typedef void* t_hts_htmlcheck_t_hts_htmlcheck_callbacks_item;
  155. typedef DEFCALLBACK(t_hts_htmlcheck_callbacks_item);
  156.  
  157. /* Linked list, which should be used for the 'arg' user-defined argument */
  158. struct t_hts_callbackarg {
  159.   /* User-defined agument for the called function */
  160.   void *userdef;
  161.  
  162.   /* Previous function, if any (fun != NULL) */
  163.   struct prev {
  164.     void *fun;
  165.     t_hts_callbackarg *carg;
  166.   } prev;
  167. };
  168.  
  169. /* Callback structure */
  170. struct t_hts_htmlcheck_callbacks {
  171.   /* v3.41 */
  172.     DEFCALLBACK(init);
  173.     DEFCALLBACK(uninit);
  174.     DEFCALLBACK(start);
  175.     DEFCALLBACK(end);
  176.     DEFCALLBACK(chopt);
  177.     DEFCALLBACK(preprocess);
  178.     DEFCALLBACK(postprocess);
  179.     DEFCALLBACK(check_html);
  180.     DEFCALLBACK(query);
  181.     DEFCALLBACK(query2);
  182.     DEFCALLBACK(query3);
  183.     DEFCALLBACK(loop);
  184.     DEFCALLBACK(check_link);
  185.     DEFCALLBACK(check_mime);
  186.     DEFCALLBACK(pause);
  187.     DEFCALLBACK(filesave);
  188.     DEFCALLBACK(filesave2);
  189.     DEFCALLBACK(linkdetected);
  190.     DEFCALLBACK(linkdetected2);
  191.     DEFCALLBACK(xfrstatus);
  192.     DEFCALLBACK(savename);
  193.     DEFCALLBACK(sendhead);
  194.     DEFCALLBACK(receivehead);
  195.   DEFCALLBACK(detect);
  196.   DEFCALLBACK(parse);
  197.   /* >3.41 */
  198. };
  199.  
  200. /* Library internal definitions */
  201. #ifdef HTS_INTERNAL_BYTECODE
  202.  
  203. #ifndef HTS_DEF_FWSTRUCT_t_hts_callback_ref
  204. #define HTS_DEF_FWSTRUCT_t_hts_callback_ref
  205. typedef struct t_hts_callback_ref t_hts_callback_ref;
  206. #endif
  207. struct t_hts_callback_ref {
  208.     const char *name;
  209.     size_t offset;
  210. };
  211.  
  212. extern const t_hts_htmlcheck_callbacks default_callbacks;
  213. extern const t_hts_callback_ref default_callbacks_ref[];
  214.  
  215. #define HT_PRINT(A) strcatbuff(opt->state.HTbuff,A);
  216. #define HT_REQUEST_START opt->state.HTbuff[0]='\0';
  217. #define HT_REQUEST_END 
  218. #define HTT_REQUEST_START opt->state.HTbuff[0]='\0';
  219. #define HTT_REQUEST_END 
  220. #define HTS_REQUEST_START opt->state.HTbuff[0]='\0';
  221. #define HTS_REQUEST_END 
  222. #define HTS_PANIC_PRINTF(S) strcpybuff(opt->state._hts_errmsg,S);
  223.  
  224. #endif
  225.  
  226. #endif
  227.  
  228.